Programmable processors continue to be increasingly used in a wide variety of consumer goods and commercial equipment. A processor based device commonly includes a processor and a memory in which application code is stored. During operation, the processor executes programming steps of the application code to control the operation of the device.
Advantages of the use of programmable processors over hardwired logic circuits include reductions in cost, ease of manufacturability, and the ability to make subsequent modifications to the application code to enhance functionality without the need to modify device hardware/mechanical configurations.
A processor based device can be initialized (turned on and made ready for operation) using startup code provided from a boot random access memory (ROM) or other memory location. The startup code enables the processor to prepare the device for normal operation, including such steps as activating various components of the device, loading the application code, etc. The processor transitions from execution of the startup code to the application code to finalize the initialization process.
When the device includes an electrical load (such as a motor) that is controlled by the processor, it is sometimes desirable that the startup code include steps to initiate operational control of the load and then hand off the control of the load to the application code.
For example, in systems that require some amount of elapsed time to prepare the load for operation (e.g., a laser or other light source, a capacitive load, etc), initiating operation of the electrical load before the application code is fully loaded may reduce the overall time to place the device in an operational ready state.
In some types of devices it is necessary to activate the electrical load in order to be able to access the application code. For example, in data storage devices the application code can be stored on a data storage medium that is rotated by a motor and accessed by a data transducing head. In such systems the startup code includes programming steps to activate the motor and the head to retrieve the application code from the medium.
Transitioning between startup code and application code while maintaining operational control of an electrical load of a device can be a complex operation. Such handoffs can be carried out in stages, whereby portions of both the application code and the startup code are sequentially executed. The processor “jumps” back and forth between the startup code and the application code, so that the startup code is gradually phased out as the application code fully takes over.
Such phasing in of the application code can add to the overall initialization time, as well as increase the difficulty in upgrading the application code since there is a danger that the upgraded application code may not handshake properly with the startup code during the initialization process.
Thus, while various approaches to transitioning between startup code and application code can be used, there nevertheless remains a continued need for improvements that carry out such handoffs in an efficient and effective manner. It is to such improvements that the present invention is directed.